const formatTime = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  return `${[year, month, day].map(formatNumber).join('/')} ${[hour, minute, second].map(formatNumber).join(':')}`
}

const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : `0${n}`
}

async function timeout(tag, f, tout) {
  console.time(tag)
  return new Promise((success,fail) =>{
    let timer = setTimeout(()=>{
      console.timeLog(tag, "step-timeout")
      fail('timeout')
    },tout)
    return f().then(success).finally(()=>clearTimeout(timer))
  }).finally(()=>{
    console.timeLog(tag, "finish")
    console.timeEnd(tag)
  });
}


module.exports = {
  formatTime,
  timeout
}
